
//
//  HomeTableViewController.swift
//  Weibo
//
//  Created by 张小东 on 16/1/10.
//  Copyright © 2016年 Mr.Zhang. All rights reserved.
//

import UIKit

import AFNetworking

import SVProgressHUD

private let HomeCellId = "HomeCellId"

class HomeTableViewController: BaseTableViewController {
    // 模型数据
    private lazy var statuses = [Status]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        if !userLogin {
            visitroLoginView?.setupUIWithInfo(nil, tipText: "关注一些人,让大家认识你")
            // 一定要添加return
            return
        }
        // 准备tableView
        prepareTableView()
        // 加载数据
        loadDate()
        
    }
    // 准备tableView
    private func prepareTableView() {
        self.tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        // 1.设置行高为自动计算行高
        // 2. 必须设置好 预估行高
        // 3. 给tableView的cell设置一个自上而下的约束
        self.tableView.rowHeight = UITableViewAutomaticDimension
        
        
        //设置固定行高
        self.tableView.estimatedRowHeight = 300
        
    }
    // 加载首页数据
    private func loadDate() {
        let urlString = "https://api.weibo.com/2/statuses/public_timeline.json"
        guard let token = UserAccountModel().token else {
            print("用户还未登陆")
            SVProgressHUD.showErrorWithStatus("请重新登陆")
            return
        }
        let parameters = ["access_token" : token]
        let AFN = AFHTTPSessionManager()
        
        AFN.GET(urlString, parameters: parameters, progress: nil
            , success: { (_, result) -> Void in
                //                print(result)
                // 转化为字典格式
                guard let dict = result as? [String : AnyObject] else {
                    SVProgressHUD.showErrorWithStatus(AppErrorTip)
                    print("数据结构错误")
                    return
                }
                guard let array = dict["statuses"] as? [[String : AnyObject]]
                    else {
                        SVProgressHUD.showErrorWithStatus(AppErrorTip)
                        print("数据结构错误")
                        return
                }
                // 定义数组容器
                var tempArray = [Status]()
                // 获取必选的 字典数组
                // 遍历数组 做字典转模型
                for item in array {
                    let s = Status(dict: item)
                    print(s)
                    //添加元素
                    tempArray.append(s)
                }
                // 执行成功的回调
                self.statuses = tempArray
                self.tableView.reloadData()
                
            }) { (_, error) -> Void in
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print(errno)
        }
    }
}
// 在拓展中 实现tableView的数据源方法

extension HomeTableViewController {
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.statuses.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // 手写代码 必须手动注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath) as! StatusCell
        //        cell.textLabel?.text = "新浪微博"
        // 显示文案
        cell.status = self.statuses[indexPath.row]
        return cell
    }
    
}


